#ifndef SEQ_RULE_H
#define SEQ_RULE_H

#include <vector>
#include "rule.h"

namespace fouine
{

class SeqRule : public RuleImpl
{
	public:
		SeqRule(const std::vector<RuleId>&);
		virtual ~SeqRule();
		virtual Likelihood match(const String&, StrId start, StrLen length, const Table& table) const;
	private:
		const std::vector<RuleId> _rule_ids;
		Likelihood _match_rec(const std::vector<RuleId>::const_iterator rule_it, StrId start, StrLen length, const Table& table) const;
};

}

#endif // SEQ_RULE_H
